package com.seu.vcampus.util;

import com.seu.vcampus.vo.User;

/**
 * 用户类型转换工具类
 * 提供用户类型与显示文本之间的双向转换
 * 
 * @author 虚拟校园开发团队
 * @since 2.1.0
 */
public class UserTypeConverter {
    
    /**
     * 将用户类型枚举转换为显示文本
     * @param type 用户类型枚举
     * @return 显示文本
     */
    public static String toDisplayText(User.UserType type) {
        if (type == null) {
            return "未知";
        }
        
        switch (type) {
            case STUDENT:
                return "学生";
            case TEACHER:
                return "教师";
            case ADMIN:
                return "管理员";
            case SYSTEM_ADMIN:
                return "系统管理员";
            case LIBRARY_ADMIN:
                return "图书管理员";
            case FINANCE_ADMIN:
                return "财务管理员";
            default:
                return type.name();
        }
    }
    
    /**
     * 将显示文本转换为用户类型枚举
     * @param displayText 显示文本
     * @return 用户类型枚举，如果无法匹配则返回null
     */
    public static User.UserType fromDisplayText(String displayText) {
        if (displayText == null || displayText.trim().isEmpty()) {
            return null;
        }
        
        switch (displayText.trim()) {
            case "学生":
                return User.UserType.STUDENT;
            case "教师":
                return User.UserType.TEACHER;
            case "管理员":
                return User.UserType.ADMIN;
            case "系统管理员":
                return User.UserType.SYSTEM_ADMIN;
            case "图书管理员":
                return User.UserType.LIBRARY_ADMIN;
            case "财务管理员":
                return User.UserType.FINANCE_ADMIN;
            default:
                return null;
        }
    }
    
    /**
     * 获取所有用户类型的显示文本数组
     * @return 用户类型文本数组
     */
    public static String[] getAllDisplayTexts() {
        return new String[]{
            "学生",
            "教师", 
            "管理员",
            "系统管理员",
            "图书管理员",
            "财务管理员"
        };
    }
    
    /**
     * 检查是否是有效的用户类型显示文本
     * @param displayText 显示文本
     * @return 是否有效
     */
    public static boolean isValidDisplayText(String displayText) {
        return fromDisplayText(displayText) != null;
    }
}